package com.ouc.openplatform.zykt.standardManage.service.impl;

import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import com.ouc.openplatform.zykt.standardManage.dto.NJ_TestItemTempletDTO;
import com.ouc.openplatform.zykt.standardManage.model.NJ_TestItemTemplet;
import com.ouc.openplatform.zykt.standardManage.service.NJ_ClientTestItemTempletService;
import com.ouc.openplatform.zykt.standardManage.service.NJ_TestItemTempletService;

import net.sf.json.JSONArray;
import net.sf.json.JSONObject;


public class NJ_ClientTestItemTempletServiceImpl implements
		NJ_ClientTestItemTempletService {

	NJ_TestItemTempletService testItemTempletService;

	//
	public NJ_TestItemTempletService getTestItemTempletService() {
		return testItemTempletService;
	}

	public void setTestItemTempletService(
			NJ_TestItemTempletService testItemTempletService) {
		this.testItemTempletService = testItemTempletService;
	}

	// Object transform
	private NJ_TestItemTempletDTO tranformTitDTO(NJ_TestItemTemplet testItemTemplet) {
		NJ_TestItemTempletDTO testItemTempletDTO = new NJ_TestItemTempletDTO();

		testItemTempletDTO.setItem_id(testItemTemplet.getItem_id());
		testItemTempletDTO.setTemplate_id(testItemTemplet.getTemplate_id());
		testItemTempletDTO.setTemplate_name(testItemTemplet.getTemplate_name());
		testItemTempletDTO.setItem_name(testItemTemplet.getItem_name());
		testItemTempletDTO.setRemark(testItemTemplet.getRemark());
		testItemTempletDTO.setIsrt_emp_id(testItemTemplet.getIsrt_emp_id());
		testItemTempletDTO.setIsrt_emp_name(testItemTemplet.getIsrt_emp_name());
		testItemTempletDTO.setIsrt_date(testItemTemplet.getIsrt_date());
		testItemTempletDTO.setUpdate_emp_id(testItemTemplet.getUpdate_emp_id());
		testItemTempletDTO.setUpdate_emp_name(testItemTemplet
				.getUpdate_emp_name());
		testItemTempletDTO.setUpdate_date(testItemTemplet.getUpdate_date());
		testItemTempletDTO.setDelete_status(testItemTemplet.getDelete_status());
		testItemTempletDTO.setTool(testItemTemplet.getTool());
		testItemTempletDTO.setCost(testItemTemplet.getCost());
		testItemTempletDTO.setRemarks(testItemTemplet.getRemarks());
		testItemTempletDTO.setJudgingBasis(testItemTemplet.getJudgingBasis());
		testItemTempletDTO.setAdditionalCharge(testItemTemplet
				.getAdditionalCharge());
		testItemTempletDTO.setChargeUnit(testItemTemplet.getChargeUnit());

		return testItemTempletDTO;
	}

	private NJ_TestItemTemplet tranformTit(NJ_TestItemTempletDTO testItemTempletDTO) {
		NJ_TestItemTemplet testItemTemplet = new NJ_TestItemTemplet();

		testItemTemplet.setItem_id(testItemTempletDTO.getItem_id());
		testItemTemplet.setTemplate_id(testItemTempletDTO.getTemplate_id());
		testItemTemplet.setTemplate_name(testItemTempletDTO.getTemplate_name());
		testItemTemplet.setItem_name(testItemTempletDTO.getItem_name());
		testItemTemplet.setRemark(testItemTempletDTO.getRemark());
		testItemTemplet.setIsrt_emp_id(testItemTempletDTO.getIsrt_emp_id());
		testItemTemplet.setIsrt_emp_name(testItemTempletDTO.getIsrt_emp_name());
		testItemTemplet.setIsrt_date(testItemTempletDTO.getIsrt_date());
		testItemTemplet.setUpdate_emp_id(testItemTempletDTO.getUpdate_emp_id());
		testItemTemplet.setUpdate_emp_name(testItemTempletDTO
				.getUpdate_emp_name());
		testItemTemplet.setUpdate_date(testItemTempletDTO.getUpdate_date());
		testItemTemplet.setDelete_status(testItemTempletDTO.getDelete_status());
		testItemTemplet.setTool(testItemTempletDTO.getTool());
		testItemTemplet.setCost(testItemTempletDTO.getCost());
		testItemTemplet.setRemarks(testItemTempletDTO.getRemarks());
		testItemTemplet.setJudgingBasis(testItemTempletDTO.getJudgingBasis());
		testItemTemplet.setAdditionalCharge(testItemTempletDTO
				.getAdditionalCharge());
		testItemTemplet.setChargeUnit(testItemTempletDTO.getChargeUnit());

		return testItemTemplet;
	}

	SimpleDateFormat formatter=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
	public JSONObject titToJsonObj(NJ_TestItemTemplet tit) {
		JSONObject jsonObject = new JSONObject();
		jsonObject.put("item_id", tit.getItem_id());
		jsonObject.put("template_id", tit.getTemplate_id());
		jsonObject.put("template_name", tit.getTemplate_name());
		jsonObject.put("item_name", tit.getItem_name());
		jsonObject.put("remark", tit.getRemark());
		jsonObject.put("isrt_emp_id", tit.getIsrt_emp_id());
		jsonObject.put("isrt_emp_name", tit.getIsrt_emp_name());
		try{
        	jsonObject.put("isrt_date", formatter.format(formatter.parse(tit.getIsrt_date())));
        }catch (Exception e) {
			// TODO: handle exception
		}
//		jsonObject.put("isrt_date", tit.getIsrt_date());
		jsonObject.put("update_emp_id", tit.getUpdate_emp_id());
		jsonObject.put("update_emp_name", tit.getUpdate_emp_name());
		try{
        	jsonObject.put("update_date", formatter.format(formatter.parse(tit.getUpdate_date())));
        }catch (Exception e) {
			// TODO: handle exception
		}
//		jsonObject.put("update_date", tit.getUpdate_date());
		jsonObject.put("delete_status", tit.getDelete_status());
		jsonObject.put("tool", tit.getTool());
		jsonObject.put("cost", tit.getCost());
		jsonObject.put("remarks", tit.getRemarks());
		jsonObject.put("judgingBasis", tit.getJudgingBasis());
		jsonObject.put("additionalCharge", tit.getAdditionalCharge());
		jsonObject.put("chargeUnit", tit.getChargeUnit());

		return jsonObject;
	}

	public int[] setPage(String page, String rows, int total) {
		int[] pArry = new int[3];
		pArry[2] = total;
		// 当前页
		int intPage = Integer.parseInt((page == null || page == "0") ? "1"
				: page);
		// 每页显示条数
		int pageSize = Integer.parseInt((rows == null || rows == "0") ? "10"
				: rows);

		if (pArry[2] > 0) {
			pArry[0] = (intPage - 1) * pageSize + 1;
			if (pArry[2] > intPage * pageSize) {
				pArry[1] = intPage * pageSize;
			} else {
				pArry[1] = pArry[2];
			}
		} else {
			pArry[0] = 1;
			pArry[1] = pageSize;
		}
		return pArry;// 返回起点和终点
	}

	@Override
	public Object searchAllTestItem(int testStandardID, String itemName,
			String page, String rows) {
		System.out.println("searchAllTestItem = page:" + page + "rows:" + rows);
		int[] pArry = setPage(page, rows,
				testItemTempletService.getSearchAllTestItemCount(
						testStandardID, itemName)); // 索引
		Map<String, Object> result = new HashMap<String, Object>(2);
		JSONArray jsonArray = new JSONArray();
		List<NJ_TestItemTemplet> titList = testItemTempletService
				.searchAllTestItem(testStandardID, itemName, pArry[0], pArry[1]);
		for (NJ_TestItemTemplet testItemTemplet : titList) {
			jsonArray.add(titToJsonObj(testItemTemplet));
		}
		result.put("total", pArry[2]);
		result.put("rows", jsonArray);
		return JSONObject.fromObject(result);
	}

	@Override
	public NJ_TestItemTempletDTO searchTestItemByID(int id) {
		NJ_TestItemTempletDTO testItemTempletDTO = new NJ_TestItemTempletDTO();
		NJ_TestItemTemplet testItemTemplet = testItemTempletService
				.searchTestItemByID(id);
		testItemTempletDTO = tranformTitDTO(testItemTemplet);
		return testItemTempletDTO;
	}

	@Override
	public int insertTestItem(NJ_TestItemTempletDTO testItemTempletDTO) {
		int result = 0;
		int tmp = 0;

		NJ_TestItemTemplet testItemTemplet = new NJ_TestItemTemplet();
		testItemTemplet = tranformTit(testItemTempletDTO);
		tmp = testItemTempletService.insertTestItem(testItemTemplet);

		if (tmp == 1) {
			result = testItemTemplet.getItem_id();
			System.out.println("client return:" + testItemTemplet.getItem_id());
		} else if (tmp == 7) {
			result = -1;
		} else {
			result = 0;
		}
		return result;
	}

	@Override
	public int deleteTestItem(int id) {
		return testItemTempletService.deleteTestItem(id);
	}

	@Override
	public int editTestItem(NJ_TestItemTempletDTO testItemTempletDTO) {
		NJ_TestItemTemplet testItemTemplet = new NJ_TestItemTemplet();
		testItemTemplet = tranformTit(testItemTempletDTO);

		return testItemTempletService.editTestItem(testItemTemplet);
	}

	// @Override
	// public Object getAllTestItem(int testStandardID,String itemName,String
	// page,String rows) {
	// System.out.println("进入TestItem_Impl层");
	// System.out.println("getAllTestItem = page:"+page+"rows:"+rows);
	// int []pArry = setPage(page, rows);
	//
	// List<TestItemTempletDTO> titDTOList = new
	// ArrayList<TestItemTempletDTO>();
	// titDTOList =
	// searchAllTestItem(testStandardID,itemName,Integer.parseInt(page),Integer.parseInt(rows));
	//
	// for(TestItemTempletDTO titDTO:titDTOList){
	// //System.out.println(titDTO.getId());
	// jsonArray.add(titDtoToJsonObj(titDTO));
	// }
	// result.put("total", pArry[2]);
	// result.put("rows", jsonArray);
	// System.out.println("jsonArray:"+jsonArray);
	// return JSONObject.fromObject(result);
	// }
	@Override
	public Object getAllTestItem() {
		List<NJ_TestItemTemplet> titList = testItemTempletService.getAllTestItem();
		JSONArray jsonArray = new JSONArray();
		for (NJ_TestItemTemplet tit : titList) {

			jsonArray.add(titToJsonObj(tit));
		}
		return jsonArray;
	}

	@Override
	public Object getAllTestItemByTstId(int tstId) {
		System.out.println("Impl-tstId:" + tstId);
		List<NJ_TestItemTemplet> titList = testItemTempletService
				.getAllTestItemByTstId(tstId);

		JSONArray jsonArray = new JSONArray();
		for (NJ_TestItemTemplet tit : titList) {
			jsonArray.add(titToJsonObj(tit));
		}
		return jsonArray;
	}

	@Override
	public int insertTestItemByExl(String[][] data, String flag, String realname) {
		System.out.println("tit导入Exl");
		List<NJ_TestItemTemplet> titL = new ArrayList<NJ_TestItemTemplet>();
		int datarow=data.length;  //数组的总行数
		int result=0;
		
		for(int i=1;i<datarow;i++){
			NJ_TestItemTemplet testItemTemplet = new NJ_TestItemTemplet();
			if(data[i][0] == null || data[i][0] ==""){
				testItemTemplet.setTemplate_name(" ");
			}else{
				testItemTemplet.setTemplate_name(data[i][0]);
			}
			
			try {
				testItemTemplet.setTemplate_id(testItemTempletService.getTstidByName(data[i][0]));
			} catch (Exception e) {
				System.out.println("设置标准ID失败");
				testItemTemplet.setTemplate_id(0);
			}
			if(data[i][1] == null || data[i][1] ==""){
				testItemTemplet.setItem_name(" ");
			}else{
				testItemTemplet.setItem_name(data[i][1]);
			}
			if(data[i][2] == null || data[i][2] ==""){
				testItemTemplet.setItem_englishname(" ");
			}else{
				testItemTemplet.setItem_englishname(data[i][2]);
			}
			if(data[i][3] == null || data[i][3] ==""){
				testItemTemplet.setRemark(" ");
			}else{
				testItemTemplet.setRemark(data[i][3]);
			}
			if(data[i][4] == null || data[i][4] ==""){
				testItemTemplet.setEnglishremark(" ");
			}else{
				testItemTemplet.setEnglishremark(data[i][4]);
			}
			if(data[i][5] == null || data[i][5] ==""){
				testItemTemplet.setTool(" ");
			}else{
				testItemTemplet.setTool(data[i][5]);
			}
			
			if(data[i][6].equals("")){
				testItemTemplet.setCost(0);
			}else{
				testItemTemplet.setCost(Integer.parseInt(data[i][6]));
			}
			if(data[i][7] == null || data[i][7] ==""){
				testItemTemplet.setChargeUnit(" ");
			}else{
				testItemTemplet.setChargeUnit(data[i][7]);
			}
			if(data[i][8] == null || data[i][8] ==""){
				testItemTemplet.setJudgingBasis(" ");
			}else{
				testItemTemplet.setJudgingBasis(data[i][8]);
			}
			if(data[i][9] == null || data[i][9] ==""){
				testItemTemplet.setIsrt_emp_name(" ");
			}else{
				testItemTemplet.setIsrt_emp_name(data[i][9]);
			}
			try {
				testItemTemplet.setIsrt_emp_id(testItemTempletService.getUsernoByName(data[i][9]));
			} catch (Exception e) {
				testItemTemplet.setIsrt_emp_id(" ");
			}
			
			result = testItemTempletService.importByExcel(testItemTemplet);
//			if(result==0) break;
		}
		return 1;
	}

}
